<?php
declare (strict_types = 1);

namespace app\store\controller\content;
use app\api\model\wxapp\Setting as WxappSettingModel;

class Common {
    //小程序发送一次性订阅消息
    /*
        参数实例:
            $data = [
            'touser'=>'openid ',//接收者（用户）的 openid
            'template_id'=>'订阅模板id',//所需下发的订阅模板id
            'page'=>'/pages/customer/customer?find_type=1',//点击模板卡片后的跳转页面，仅限本小程序内的页面。支持带参数,（示例index?foo=bar）。该字段不填则模板无跳转。
            'miniprogram_state'=>'developer',//跳转小程序类型：developer为开发版；trial为体验版；formal为正式版；默认为正式版
            'lang'=>'zh_CN',
            //模板内容，格式形如 { "key1": { "value": any }, "key2": { "value": any } }
            'data'=>[
                "thing11"=>[
                    'value' => '浙江温州李先生'
                ],
                "thing12"=>[
                    'value' => '高速公路'
                ],
                'thing13'=>[
                    'value'=>'摇号结束,进小程序查看'
                ]
            ]
        ];
    */
    public function sendMessage($data = [])
    {
        $wxConfig = WxappSettingModel::getWxappConfig();
        if (empty($wxConfig['app_id']) || empty($wxConfig['app_secret'])) {
            throwError('请到后台小程序设置填写AppID和AppSecret参数');
        }
        $res=[
            'appid'=>$wxConfig['app_id'],
            'appsecret'=>$wxConfig['app_secret'],
        ];
        $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $res['appid'] . '&secret=' . $res['appsecret'];
        //json_encode 	对变量进行 JSON 编码     file_get_contents() 把整个文件读入一个字符串中。
        $res = json_decode(file_get_contents($url),true);
        $access_token = $res['access_token'] ;
        //请求url
        $url = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' . $access_token ;
        return self::curlPost($url,json_encode($data)) ;
    }
//发送post请求 小程序发送一次性订阅消息
    static function curlPost($url,$data)
    {
        $ch = curl_init();
        $params[CURLOPT_URL] = $url;    //请求url地址
        $params[CURLOPT_HEADER] = FALSE; //是否返回响应头信息
        $params[CURLOPT_SSL_VERIFYPEER] = false;
        $params[CURLOPT_SSL_VERIFYHOST] = false;
        $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
        $params[CURLOPT_POST] = true;
        $params[CURLOPT_POSTFIELDS] = $data;
        curl_setopt_array($ch, $params); //传入curl参数
        $content = curl_exec($ch); //执行
        curl_close($ch); //关闭连接
        return $content;
    }
}
